﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;

/// <summary>
/// Clase estatica usada para validar si los datos ingresados son los esperados
/// </summary>

namespace validarDatos{

    public class CValidaDatos
    {
        /*VALIDA PALABRA*/

        public static bool validaPalabras(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^(\w|\d|\.|\s|\-)*$"); //caracteres permitidos

                /*
                 
                  
                 ^   Desde el inicio de la cadena se comprueba
                 (   Inicio caracteres Permitidos
                 \w  Cualquier carácter alfabetico, incluido el de subrayado. Equivalente a [A-Za-z_].
                 \d  Cualquier carácter de dígito. Equivalente a [0-9].
                 \.  Caracter "."
                 \s  Cualquier carácter individual de espacio en blanco (espacios, tabulaciones, saltos de página o saltos de línea).
                 \-  Caracter "-"
                 )   Final caracteres permitidos
                 *   Infinitas veces se pueden repetir los caracteres contenidos en los corchetes
                 $   Hasta el final de la cadena se comprueba
                 
                 
                 */

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }

            }
            catch
            {
                bandera = false;
            }

            return bandera;
        }

        /*VALIDA EMAIL*/

        public static bool validaEmail(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                  @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                  @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); //caracteres permitidos

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }
            }
            catch
            {
                bandera = false;
            }

            return bandera;
        }

        /*VALIDA NUMEROS ENTEROS*/

        public static bool validaEntero(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^[0-9]{1,14}?$"); //caracteres permitidos

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }
            }
            catch
            {
                bandera = false;
            }


            if (bandera)
            {
                int valor;

                return Int32.TryParse(cadena.Trim(), System.Globalization.NumberStyles.Any,
                    System.Globalization.NumberFormatInfo.InvariantInfo, out valor);
            }

            return false;

        }


        /*VALIDA NUMEROS DECIMALES*/

        public static bool validaDecimal(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^[0-9]{1,14}(\.[0-9]{0,2})?$"); //caracteres permitidos

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }
            }
            catch
            {
                bandera = false;
            }


            if (bandera)
            {
                double valor;

                return Double.TryParse(Convert.ToString(cadena.Trim()), System.Globalization.NumberStyles.Any,
                    System.Globalization.NumberFormatInfo.InvariantInfo, out valor);
            }

            return false;
        }

        /*VALIDA DATETIME*/

        public static bool validaFecha(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^[0-9]{4}\-[0-9]{2}\-[0-9]{2}?$"); //caracteres permitidos

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }
            }
            catch
            {
                bandera = false;
            }


            if (bandera)
            {
                DateTime valor;

                return DateTime.TryParse(cadena.Trim(), out valor);
            }

            return false;

        }


        /*VALIDA CONTRASEÑA*/

        public static bool validaPass(string cadena)
        {
            bool bandera = true;

            try
            {
                Regex rex = new Regex(@"^(\w|\d|\.|\s|\-|\@|\*|\$|\#|\&|\/|\!)*$"); //caracteres permitidos

                if (!rex.IsMatch(cadena))
                {
                    bandera = false;//si encuentra un caracter que no esta definido
                }
            }
            catch
            {
                bandera = false;
            }

            return bandera;
        }

    }
}